// 全局配置对象
var config = {};
// 面包屑
config.bread = {
    // 属性配置集合
    attr: {
        className: '',
        style: {}
    },
    // 元素集合
    items: [
        {
            tag: 'a',
            text: '后台管理'
        },
        {
            tag: 'a',
            text: '会员管理'
        }
    ]
};
// 搜索表单
config.search = {
    // 属性配置集合
    attr: {
        // 超过行数折叠
        foldRows: 3,
        // 折叠状态
        foldStatus: true,
        className: '',
        style: {}
    },
    form: {
        // 必填。属性集合
        attr: {
            // 选填。自定义样式名称
            className: '',
            // 选填。自定义行内样式
            style: {},
            // 选填。表单元素布局列数，支持 1 2 3 4 5 6，默认4列。此处自带响应式缩放列
            columns: 4,
            // 选填。序号
            id: 'searchForm',
            // 必填。表单名称（分页表格组件设置pagetable.attr.formName与此值一致）
            name: 'searchForm',
            // 必填。表单提交路径
            action: '/buyerManager/getBuyList',
            // 选填。表单提交方式，支持 POST / GET，默认GET
            method: 'post',
            // 选填。页面加载完成后提交表单，一般用于页面展示后显示第一页数据，默认false
            load: false,
            // 选填。是否在提交数据中不增加params参数，true为不增加，false或不设置为增加
            withoutParams: false
        },
        // 选填。表单提交前处理函数，一般用于增加自定义数据校验。返回true才会进行表单提交，不返回或返回false不提交表单
        onSubmit: function (date) {

            console.log(date);
            return true;
        },
        // 选填。表单提交完成后回调函数，一般用于数据处理，设置分页等。注意该函数处理完数据后需将处理数据返回
        onSuccess: function (result) {
            console.log(result);
            setPage(result.total)
            return result.list;
        },
        // 选填。请求失败处理函数
        onError: function (err) {
            console.error(err);
        },
        // 选填。自定义处理框架校验错误消息，如果没配置，则使用框架默认alert弹出错误消息
        onValidate: function(errMsg) {
            alert(errMsg);
        },
        // 选填。（常用与详情页）
        // 注意此处与attr.action区别：action是提交数据到服务器，这里一般用于读取数据渲染到表单
        // 此处配置项与常用ajax请求配置一样，比如jquery
        ajax: {
            // 必填。数据获取地址
            url: '/buyerManager/getBuyList',
            // 选填。请求方法 GET / POST，默认GET
            method: 'POST',
            // 选填。请求发送参数
            data: {},
            // 选填。是否支持缓存，默认false
            cache: false,
            // 选填。是否页面渲染完成后即可加载，false不加载， true或不配置均会加载
            load: false,
            // 选填。是否在提交数据中不增加params参数，true为不增加，false或不设置为增加
            withoutParams: false,
            // 选填。成功回调函数，这里可以做一下数据处理工作。如有设置，请必须返回处理后的值
            success: function(data) {
                return data;
            },
            // 选填。失败回调函数，这里可以做一下失败提示
            error: function(err) {
                // dosomething
            }
        },
        // 表单元素
        items: [
            {
                tag: 'input',
                label: '会员名称',
                attr: {
                    id: '',
                    name: 'buyerName'
                }
            },
            {
                tag: 'input',
                label: '会员电话号码',
                attr: {
                    id: '',
                    name: 'buyerPhoneNumber'
                }
            },
            {
                tag: 'input',
                label: '会员昵称',
                attr: {
                    id: '',
                    name: 'buyerNickName'
                }
            },
            {
                tag: 'input',
                label: '会员地址',
                attr: {
                    id: '',
                    name: 'buyerAddress'
                }
            },
            {
                tag: 'input',
                label: '会员密码',
                attr: {
                    id: '',
                    name: 'buyerPassword'
                }
            },
            {
                tag: 'select',
                label: '是否有效',
                attr: {
                    className: '',
                    style: {},
                    name: 'effective',
                    // 选填。适用于ajax读取数据与默认配置不一致。默认 text
                    fieldText: 'text',
                    // 选填。适用于ajax读取数据与默认配置不一致。默认 value
                    fieldValue: 'value'
                },
                options: [
                    {
                        text: '全部',
                        value: '',
                    }, {
                        text: '是',
                        value: '1'
                    }, {
                        text: '否',
                        value: '0'
                    }
                ]
            }
        ],
        // 表单按钮组
        btngroup: {
            attr: {
                // 自定义样式，框架提供对齐方式样式名 center / left / right，默认：left
                className: 'center',
                style: {}
            },
            items: [
                {
                    tag: 'button',
                    text: '查询',
                    attr: {
                        // 配置为submit是标识当前按钮可以提交表单
                        type: 'submit'
                    },
                    onClick: function (e) {
                        console.log(e);
                    }
                }
            ]
        }
    }
};
// 业务操作按钮
config.btngroup = {
    attr: {
        className: 'left',
        style: {}
    },
    items: [
        {
            tag: 'button',
            text: '新建',
            attr: {
                className: '',
                style: {},
                // 选填：权限码
                permission: ''
            },
            onClick: function () {
                var chileFrame = lv.open({
                    // 打开窗口url
                    url: '/buyerManager/toAddBuyer',
                    // 弹窗宽度
                    width: 800,
                    // 弹窗高度
                    height: 350,
                    // 弹窗名称。设置不同名称可打开多个同样url弹窗
                    name: 'luckincoffee'
                });

                // lv.open('/buyerManager/toAddBuyer');
            }
        },
        {
            tag: 'button',
            text: '修改',
            attr: {
                className: '',
                style: {},
                // 选填：权限码
                permission: '',
                disabled: false
            },
            onClick: function () {
               var dateArray =  config.pagetable.table.attr.checkResult;
                if(dateArray == null || dateArray == "" || dateArray == undefined ){
                    lv.alert("请选择需要修改的列");
                    return;
                }
                var modifyBuyer = lv.open({
                    // 打开窗口url
                    url: '/buyerManager/toModifyBuyer',
                    // 弹窗宽度
                    width: 800,
                    // 弹窗高度
                    height: 350,
                    // 弹窗名称。设置不同名称可打开多个同样url弹窗
                    name: 'modifyBuyer'
                });
            }
        },
        {
            tag: 'button',
            text: '删除/恢复',
            attr: {
                className: '',
                style: {},
                // 选填：权限码
                permission: '',
                disabled: false
            },
            onClick: function () {
                var dateArray =  config.pagetable.table.attr.checkResult;
                if(dateArray == null || dateArray == "" || dateArray == undefined ){
                    lv.alert("请选择需要删除或者恢复的列");
                    return;
                }
                //ajax
                $.ajax({
                    type: 'post', // 请求发送方式
                    url: '/buyerManager/doDeleteBuyer', // 请求地址
                    data: {
                       "buyerId":dateArray.buyerId
                    },// 请求数据
                    async: true,// 异步，不写默认为True
                    // 请求成功后的回调
                    success: function (data) {
                        lv.alert(data.msg);
                        if(data.code == 1){
                            updateDate()
                        }
                    },
                    error: function (errorMessage) {

                    }
                });
            }
        }
    ]
};
// 分页表格
config.pagetable = {
    attr: {
        // 表格标题
        title: '我是表格的标题',
        // 当前分页表格使用哪个表单数据，与form.attr.name一致
        formName: 'searchForm'
    },
    table: {
        // 表格数据：数据对象数组
        data: [],
        attr: {
            // 样式名称
            className: '',
            // 自定义行内样式
            style: {},
            // 宽度
            width: '',
            // 第一列选中类型：radio / checkbox
            checkType: 'radio',
            // 数据列表中哪个属性值作为选中依据，设置唯一属性名
            checkField: 'buyerId',
            // 选择记录集合：选中完整行记录对象全部存放于此。配置单选时，为一个对象，配置多选时，为一个数组
            checkResult: []
        },
        // 表格记录选择框选中回调函数，当前选择行完整记录
        onCheck: function (rowData) {

            console.log('checked rowData is ', rowData);
        },
        // 异步数据获取配置，与常用ajax请求配置一样，比如jquery
        ajax: {
            // 数据获取地址
            url: '/buyerManager/getBuyList',
            // 请求方法，GET / POST
            method: 'GET',
            // 请求发送参数
            data: {
                page:1,
                rows:2
            },
            // 是否支持缓存
            cache: false,
            // 成功回调函数，这里可以做一下数据处理工作。如有设置，请必须返回处理后的值
            success: function(data) {
                setPage(data.total)
                return data.list;
            },
            // 失败回调函数，这里可以做一下失败提示
            error: function(err) {
                // dosomething
            }
        },
        // 定义表格数据列表
        items: [
            {
                name: 'buyerName',
                text: '会员名字<span style="color:#e40">*</span>',
                sort: true
            },
            {
                name: 'buyerNickName',
                text: '会员昵称'
            },
            {
                name: 'buyerPhoneNumber',
                text: '会员电话号码'
            },
            {
                name: 'buyerAddress',
                text: '会员地址'
            },
            {
                name: 'buyerPassword',
                text: '会员密码'
            },
            {
                name: 'effective',
                text: '是否有效'
            }
        ],
        // 表格里面列数据需要格式化，可以配置属性名函数
        format: {
            // 格式化函数支持返回组件。第一个参数是当前值，第二个参数是完整对象值
            // orderNo: function (value, obj) {
            //     return {
            //         tag: 'a',
            //         text: value,
            //         onClick: function (e) {
            //             e.preventDefault();
            //             lv.open({
            //                 url: 'https://www.baidu.com/',
            //                 width: 1200
            //             });
            //             // lv.alert('我被点击了' + JSON.stringify(obj));
            //             return false;
            //         }
            //     };
            // },
            effective: function (value) {
                if(value == 1){
                    return "是";
                }
                return "否";
            }
        }
    },
    pager: {
        attr: {
            // 分页对齐方式，默认左对齐(left)。支持 left / center / right
            align: 'left',
            // 分页页码显示位置，默认底部(bottom)。可选 top / bottom / both
            position: 'bottom',
            // 每页显示条数，默认15
            rows: 2,
            // 当前页码，默认1
            page: 1,
            // 记录总数。-1 不显示页码只显示上下页，0 或 不设置则不显示分页
            total: 15,
            // 自定义行内样式
            style: {},
            // 自定义样式名称
            className: {}
        },
        // 分页切换回调函数
        onChange: function (pageNo) {
            // ajax(pageNo)
        }
    }
};

// 启动框架
window.lv.start({
    // 选填。配置项填充div的id值，默认 lv-view
    viewId: 'lv-view',
    // 必填。配置项对象
    config: config
});
//
// function ajax(page) {
//     $.ajax({
//         type: 'post', // 请求发送方式
//         url: '/buyerManager/getBuyList', // 请求地址
//         data: {'page': page, 'rows': 2},// 请求数据，用户名和密码
//         async: true,// 异步，不写默认为True
//         // 请求成功后的回调
//         success: function (data) {
//             setDate(data)
//         },
//         error: function (errorMessage) {
//
//         }
//     });
// }
function updateDate() {
    var date = config.search.form.data;
    lv.formSubmit('searchForm', {
        // json数据对象。额外需要随表单元素一起提交数据
        // 比如指定页码等
        page: 1,
        buyerName:date.buyerName,
        buyerPhoneNumber: date.buyerPhoneNumber,
        buyerNickName: date.buyerNickName,
        buyerAddress:date.buyerAddress,
        effective:date.effective,
        buyerPassword:date.buyerPassword
    });

    // $.ajax({
    //     type: 'post', // 请求发送方式
    //     url: '/buyerManager/getBuyList', // 请求地址
    //     data: {
    //         buyerName:date.buyerName,
    //         buyerPhoneNumber: date.buyerPhoneNumber,
    //         buyerNickName: date.buyerNickName,
    //         buyerAddress:date.buyerAddress,
    //         effective:date.effective,
    //         buyerPassword:date.buyerPassword
    //     },// 请求数据，用户名和密码 buyer
    //     async: true,// 异步，不写默认为True
    //     // 请求成功后的回调
    //     success: function (data) {
    //         if(data.total != 0 ){
    //             config.pagetable.pager.attr.page = 1;
    //         }
    //         setDate(data)
    //     },
    //     error: function (errorMessage) {
    //
    //     }
    // });
}
// function setDate(data) {
//     var list = data.list
//     // return list;
//     config.pagetable.table.data.length = 0;
//     setPage(data.total)
//     for (i=0;list.length;i++){
//         config.pagetable.table.data.push({
//             buyerId: list[i].buyerId,
//             buyerPhoneNumber: list[i].buyerPhoneNumber ,
//             buyerName: list[i].buyerName ,
//             buyerNickName: list[i].buyerNickName ,
//             buyerAddress: list[i].buyerAddress ,
//             buyerPassword: list[i].buyerPassword ,
//             effective: list[i].effective
//         });
//     }
// }
function setPage(total) {
    // config.pagetable.pager.attr.page = page;
    // config.pagetable.pager.attr.rows = pages;
   config.pagetable.pager.attr.total = total;
}

function getSelectDate() {
    return config.pagetable.table.attr.checkResult;
}
